/**
 * @Copyright ®2015 Sinosoft Co. Ltd. All rights reserved.<br/>
 * 项目名称 : 中科软支付平台
 * 创建日期 : 2016年12月13日
 * 修改历史 : 
 *     1. [2016年12月13日]创建文件 by liuyujia
 */
package com.sinosoft.sinopay.web.weixinpay.biz.service;

import com.sinosoft.sinocloud.platform.common.exception.biz.IllegalRequestException;
import com.sinosoft.sinocloud.platform.common.exception.biz.SinoBizException;
import com.sinosoft.sinocloud.platform.common.exception.checked.RepeatRequestException;
import com.sinosoft.sinocloud.platform.common.exception.system.SinoSystemException;
import com.sinosoft.sinopay.api.common.dto.pay.PaymentInfoDetailDTO;
import com.sinosoft.sinopay.payrules.dto.MerchantCheckDTO;
import com.sinosoft.sinopay.web.weixinpay.dto.WechatEntryRequsetDTO;

/**  
 * 【微信支付安全服务接口】
 * @author liuyujia
 * @date 2016年12月13日 下午5:09:15 
 * @version V1.0  
 */
public interface WechatSecurityService {
	/**
	 * 根据商户验证签名合法性
	 * @param merchatCode
	 * @param tWechatEntryRequsetDTO
	 */
	void checkMerchantSignValid(String merchantCode, WechatEntryRequsetDTO tWechatEntryRequsetDTO, String signMsg) throws IllegalRequestException;

	/**
	 * 请求IP合法性
	 * @param tRequestIp
	 * @throws IllegalRequestException
	 */
	void checkRequestIpValid(String tRequestIp) throws IllegalRequestException;
	
	/**
	 * 校验重复请求
	 * @param merchantCode
	 * @param serialNo
	 * @throws RepeatRequestException
	 */
	void  checkRepeatRequest(String merchantCode,String serialNo) throws RepeatRequestException;
	
	/**
	 * 生成支付签名
	 * @param merchantCode
	 * @param tWechatEntryRequsetDTO
	 * @return
	 * @throws IllegalRequestException
	 */
//	String getMerchantSignValid(String merchantCode, WechatEntryRequsetDTO tWechatEntryRequsetDTO) throws IllegalRequestException;
	
	/**
	 * 根据openid，校验客户信息
	 * @param openid
	 * @throws IllegalRequestException
	 */
	void checkCustomerByOpenid(String openid, PaymentInfoDetailDTO pPaymentInfoDetailDTO) throws IllegalRequestException;
	
	/**
	 * 根据商户信息校验支付规则
	 * @param merchantCheckDTO
	 */
	void checkMerchantRules(MerchantCheckDTO merchantCheckDTO) throws SinoBizException, SinoSystemException;
	
	/**
	 * 验证签名
	 * @param PayNo
	 * @param PayWay
	 * @param SignMsg
	 * @throws IllegalRequestException
	 */
	void checkPayNoSignValid(String PayNo, String PayWay, String SignMsg) throws IllegalRequestException;
	
	/**
	 * 验证订单支付状态
	 * @param payNo
	 * @throws IllegalRequestException
	 */
	void checkPayStatus(String payNo) throws IllegalRequestException;
}
